package com.e.maoyanapp2.fragment;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public abstract class BaseFragment extends Fragment {


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        int id=getLayoutid();
        View view = inflater.inflate(id, container, false);
        initView(view);
        initListener();
        initPresenter();
        initData();
        return super.onCreateView(inflater, container, savedInstanceState);
    }

    /* **
            * 初始化数据,加载初始数据
* 通常是调用present对象进行网络访问,获取数据
*/
    protected abstract void initData();
    /**
     * 初始化preseneter,这是采用mvp架构,
     * 在view中必须持有present的引用,用于调用业务逻辑
     */
    protected abstract void initPresenter();
    /**
     * 创建监听器,用于本fragment中需要添加的监听
     */
    protected abstract void initListener();
    /**
     * 初始化视图,用户获取视图中的各个控件
     * 初始化recyclerview等工作
     * @param view 当前fragment的视图对象
     *             getview().findviewbyid()..
     */
//初始化视图
    protected abstract void initView(View view);
    /**
     * 获取当前fragment的布局id
     * 由于每个fragment的布局文件是各不相同的,
     * 因此定义方法,加载本fragment的布局文件,
     * 在createView中就可以创建本布局文件的视图
     */
    protected abstract int getLayoutid();
}
